using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._DataManagementTools._LayersandTableViews
{
    /// <summary>
    /// <para>Make TIN Layer</para>
    /// <para>Creates a triangulated irregular network (TIN) layer
    /// from an input TIN dataset or layer file. The layer that is created by the tool is temporary and will not persist after the session ends unless the layer is saved to disk or the map document is saved.</para>
    /// <para>创建三角化不规则网络 （TIN） 图层
    /// 从输入 TIN 数据集或图层文件。该工具创建的图层是临时的，除非将图层保存到磁盘或保存地图文档，否则会话结束后不会保留。</para>
    /// </summary>    
    [DisplayName("Make TIN Layer")]
    public class MakeTinLayer : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public MakeTinLayer()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_in_tin">
        /// <para>Input TIN</para>
        /// <para>The input TIN dataset or layer from which the new layer will be created.</para>
        /// <para>将从中创建新图层的输入 TIN 数据集或图层。</para>
        /// </param>
        /// <param name="_out_layer">
        /// <para>Output TIN Layer</para>
        /// <para>The name of the TIN layer to be created. The output layer can be used as an input to any geoprocessing tool that accepts a TIN layer as input.</para>
        /// <para>要创建的 TIN 图层的名称。输出图层可用作任何接受 TIN 图层作为输入的地理处理工具的输入。</para>
        /// </param>
        public MakeTinLayer(object _in_tin, object _out_layer)
        {
            this._in_tin = _in_tin;
            this._out_layer = _out_layer;
        }
        public override string ToolboxName => "Data Management Tools";

        public override string ToolName => "Make TIN Layer";

        public override string CallName => "management.MakeTinLayer";

        public override List<string> AcceptEnvironments => ["workspace"];

        public override object[] ParameterInfo => [_in_tin, _out_layer];

        /// <summary>
        /// <para>Input TIN</para>
        /// <para>The input TIN dataset or layer from which the new layer will be created.</para>
        /// <para>将从中创建新图层的输入 TIN 数据集或图层。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input TIN")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_tin { get; set; }


        /// <summary>
        /// <para>Output TIN Layer</para>
        /// <para>The name of the TIN layer to be created. The output layer can be used as an input to any geoprocessing tool that accepts a TIN layer as input.</para>
        /// <para>要创建的 TIN 图层的名称。输出图层可用作任何接受 TIN 图层作为输入的地理处理工具的输入。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output TIN Layer")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _out_layer { get; set; }


        public MakeTinLayer SetEnv(object workspace = null)
        {
            base.SetEnv(workspace: workspace);
            return this;
        }

    }

}